#include "ExternalPlant.h"

#include "Utils.h"

namespace RafMat {
namespace SimEngine {

/** Wykonuje krok symulacji */
double ExternalPlant::simulateStep(double inputSample)
{
    return m_plant.simulate(inputSample);
}

/** Reset modelu do stanu początkowego */
void ExternalPlant::reset()
{
    m_plant.reset();
}

bool ExternalPlant::setParameter(const std::string& param, const std::string& value) throw(std::logic_error)
{
    try
    {
        m_plant.setParameter(Utils::trimWhiteSpaces(param), Utils::trimWhiteSpaces(value));
    }
    catch(AdaptiveTechniques::plant_error &exc)
    {
        throw std::logic_error(exc.what());
    }

    return true;
}

std::string ExternalPlant::getParameter(const std::string& param) const throw(std::logic_error)
{
    return m_plant.getParameter(Utils::trimWhiteSpaces(param));
}

SimFile::ConfigWriter& ExternalPlant::dumpParameters(SimFile::ConfigWriter& o) const
{
    // Fake implementation.
    return o;
}

}
}
